package DieSiedler;
/*
 * DrawBackground.java
 *
 * Created on 24. April 2007, 16:40
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

import java.util.*;
import java.awt.*;
import java.io.*;
//import javax.swing.*;
import javax.imageio.*;

/**
 * Zeichnet und animiert den Hintergrund des Spielfelds.
 * @author Michi
 */
public class DrawBackground extends Thread{
    //private Graphics g;
    private HintergrundbilderLaden hintergrundbilder = null;
    private Spielfeld spielfeld;
    private Image [] aPic = null;
    //private int anzahlBilder = 0;
    private String dateiname = "/DieSiedler/Bilder/water_0079/water_079_c_0001.jpg";
    private String s;
    private int p=0;
    private boolean active;
    
    /** Creates a new instance of DrawBackground */
    public DrawBackground(Spielfeld spielfeld) {
        this.spielfeld = spielfeld;
        try{
            aPic = new Image[1];
            aPic[0] = Toolkit.getDefaultToolkit().createImage(getClass().getResource(dateiname));
        }
        catch(NullPointerException e){
        }
        ladeBilder(dateiname);
    }
    
    public void run(){
        while(true){
        	while(active){
	            p++;
	            if(aPic != null){
	                if(p>=aPic.length){
	                    p=0;
	                }
	            }
	            spielfeld.getAnimation().movePicture();     //Synchronisiert die Animation
	            spielfeld.repaint();
	            
	            try{
	                sleep(50);
	            }
	            catch(InterruptedException e){
	                
	            }
        	}
        	
        	try{
                sleep(500);
            }
            catch(InterruptedException e){
                
            }        	
        }
    }
    
    public void animateSeawave(boolean option){
    	active = option;
    	if(active && !this.isAlive()){
    		this.start();
    	}
    }
    
    public void paint(Graphics g){
        if(aPic != null){
            for(int x=0; x<spielfeld.getWidth(); x+=(int)(aPic[p].getWidth(null))){
                for(int y=0; y<spielfeld.getHeight(); y+=(int)(aPic[p].getHeight(null))){
                    g.drawImage(aPic[p], x, y, (int)(aPic[p].getWidth(null)), (int)(aPic[p].getHeight(null)),null);
                }
            }
        }
    }

    
    public int getHeight(){
        return (int)(aPic[0].getHeight(null));
    }
    public int getWidth(){
        return (int)(aPic[0].getWidth(null));
    }

    public void ladeBilder(String filename){
        if(hintergrundbilder != null){
            //hintergrundbilder.yield();
            hintergrundbilder.anhalten();
            hintergrundbilder = null;
        }
        if(aPic != null){
            Image pic = aPic[p];
            aPic = new Image[1];
            aPic[0] = pic;
        }
        p=0;
        hintergrundbilder = new HintergrundbilderLaden(filename, this);
        hintergrundbilder.start();
        
    }
    
    public void setHintergrundbild(Image[] aPic){
        this.aPic = aPic;
        p=0;
        if(!active){
        	spielfeld.repaint();
        }
    }
}
